package br.com.vilababy.sigvb.validadores;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import br.com.vilababy.sigvb.SIGVBUtil;
import br.com.vilababy.sigvb.constantes.SIGVBEnum;

@FacesValidator("autorizadoValidator")
public class AutorizadoValidator implements Validator {

	/**
	 * @author Diego Patrick da Silva Santos
	 */
	@Override
	public void validate(FacesContext contexto, UIComponent componente, Object objeto)
			throws ValidatorException {
		FacesMessage mensagem = null;
		mensagem = validarCamposObrigatoriosVazios(objeto, componente);
			
		SIGVBUtil.tratarErroValidacao(mensagem);
	}
	
	private FacesMessage validarCamposObrigatoriosVazios(Object objeto, UIComponent componente) {
 		FacesMessage mensagem = null;
		
		if (objeto == null || (objeto != null && (objeto instanceof String ? ((String)objeto).isEmpty() : false)))
			switch (SIGVBEnum.getSIGVBEnum(componente.getId())) {
				case ID_COMBO_ALUNO_AUTORIZADO: mensagem = SIGVBUtil.retornarMensagemErro(SIGVBUtil.getValorMensagem(SIGVBEnum.FALHA_CADASTRO.getValor()), SIGVBUtil.getValorMensagem(SIGVBEnum.SELECIONE_ALUNO.getValor()));
				break;
				case ID_AUTORIZADO_RELACAO: mensagem = SIGVBUtil.retornarMensagemErro(SIGVBUtil.getValorMensagem(SIGVBEnum.FALHA_CADASTRO.getValor()), SIGVBUtil.getValorMensagem(SIGVBEnum.SELECIONE_RELACAO.getValor()));
				break;
				case ID_NOME_AUTORIZADO: mensagem = SIGVBUtil.retornarMensagemErro(SIGVBUtil.getValorMensagem(SIGVBEnum.FALHA_CADASTRO.getValor()), SIGVBUtil.getValorMensagem(SIGVBEnum.NOME_AUTORIZADO_INFORME.getValor()));
				break;
				default: mensagem = SIGVBUtil.retornarMensagemErro(SIGVBUtil.getValorMensagem(SIGVBEnum.FALHA_CADASTRO.getValor()), SIGVBUtil.getValorMensagem(SIGVBEnum.CAMPO_OBRIGATORIO.getValor()));
				break;
			}
		
		return mensagem;
	}

}
